package com.xd.core.business.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xd.common.constant.SysConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 进件信息表
 * </p>
 *
 * @author ZX
 * @since 2025-02-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "IncomingInfo对象", description = "进件信息表")
public class IncomingInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "进件ID")
    @TableId(value = "incoming_id", type = IdType.AUTO)
    private Integer incomingId;

    @ApiModelProperty(value = "姓名")
    private String name;

    @ApiModelProperty(value = "身份证正面地址")
    private String idCardFrontUrl;

    @ApiModelProperty(value = "身份证反面地址")
    private String idCardReverseUrl;

    @ApiModelProperty(value = "身份证")
    private String idCard;

    @ApiModelProperty(value = "邮箱")
    private String email;

    @ApiModelProperty(value = "手机号")
    private String phone;

    @ApiModelProperty(value = "所在省份")
    private Integer province;

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "所在城市")
    private Integer city;

    @ApiModelProperty(value = "现住地址")
    private String address;

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "工作行业")
    private String industry;

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "工作时长")
    private String duration;

    @ApiModelProperty(value = "职务")
    private String office;

    @ApiModelProperty(value = "税后收入")
    private String afterTaxIncome;

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "学历")
    private String degree;

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "婚姻状况")
    private String marriage;

    @ApiModelProperty(value = "期望金额")
    private String expectedAmount;

    @ApiModelProperty(value = "附件")
    private String annex;

    @ApiModelProperty(value = "公积金缴存基数")
    private BigDecimal fundPayAmount;

    @ApiModelProperty(value = "公积金缴存单位")
    private String fundPayUnit;

    @ApiModelProperty(value = "公积金证明")
    private String fundProve;

    @ApiModelProperty(value = "社保缴存基数")
    private BigDecimal socialPayAmount;

    @ApiModelProperty(value = "社保缴存单位")
    private String socialPayUnit;

    @ApiModelProperty(value = "社保证明")
    private String socialProve;

    @ApiModelProperty(value = "担保人姓名")
    private String guarantorName;

    @ApiModelProperty(value = "担保人手机号")
    private String guarantorPhone;

    @ApiModelProperty(value = "担保人关系")
    private String guarantorRelation;

    @ApiModelProperty(value = "担保人身份证")
    private String guarantorIdCard;

    @ApiModelProperty(value = "担保人身份证正面")
    private String guarantorIdCardFront;

    @ApiModelProperty(value = "担保人身份证反面")
    private String guarantorIdCardReverse;

    @ApiModelProperty(value = "担保人邮箱")
    private String guarantorMail;

    @ApiModelProperty(value = "担保人地址")
    private String guarantorAddress;

    @ApiModelProperty(value = "有无担保人")
    private String guarantorYes;

    @ApiModelProperty(value = "有无共同借款人(0--否,1--是)")
    private String commonLoanYes;

    @ApiModelProperty(value = "进件机构id")
    private Integer incomingCompanyId;

    @ApiModelProperty(value = "所属资方ID")
    private Integer companyId;

    @ApiModelProperty(value = "进件人ID")
    private Integer incomingUserId;

    @ApiModelProperty(value = "归属资方员工ID")
    private Integer manageUserId;

    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date createTime;

    @ApiModelProperty(value = "流程状态（1-进件中，2-进件审核中，3-等待授信，4-授信失败，5-授信完成,6-等待签约,7-签约完成," +
            "8-抵押办理,9--抵押完成,10--公证办理,11--待放款,12--放款中,13--放款完成）")
    private String status;

    @ApiModelProperty(value = "进件产品id")
    private Integer productId;

    @ApiModelProperty(value = "订单状态(0--启用,1--停用)")
    private String isEnable;

    @ApiModelProperty(value = "审核状态(0--待审核,1--已审核)")
    private String examineStatus;

    @ApiModelProperty(value = "贷款类型")
    private String loanType;

    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date updateTime;

    @ApiModelProperty(value = "贷款合同id")
    private Integer loanContractId;

    @ApiModelProperty(value = "合同签约日期")
    @JsonFormat(pattern = "yyyy-MM-dd", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date contractTime;

    @ApiModelProperty(value = "进件订单号")
    private String incomingOrder;

    @ApiModelProperty(value = "个人信息授权书签署状态(0--未签署,1--已签署)")
    private String personalInfoStatus;

    @ApiModelProperty(value = "主借人城市坐标")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String liveCitySqes;

    @ApiModelProperty(value = "有无紧急联系人（0--否，1--是）")
    private String isIncomingUrgentContacts;

    @ApiModelProperty(value = "经营贷是否需要抵押（0--否，1--是）")
    private String isJydMortgage;

    @ApiModelProperty(value = "主体类型（0--自然人，1--企业）")
    private String principalType;

    @ApiModelProperty(value = "借款主体身份 (0-法定代表人 ,1-股东 ,2-挂靠人)")
    private String borrowerEntityType;

    @ApiModelProperty(value = "签约方式 （0-法人签约， 1-经办人签约）")
    private String signingMethod;

    @ApiModelProperty(value = "投保公司id")
    private Integer insuranceCompanyId;

    @ApiModelProperty(value = "营业执照")
    private String license;

    @ApiModelProperty(value = "公司名称")
    private String companyName;

    @ApiModelProperty(value = "统一社会信用代码")
    private String unifiedSocialCreditCode;

    @ApiModelProperty(value = "公司成立日期")
    @JsonFormat(pattern = "yyyy-MM-dd", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date companyStartTime;

    @ApiModelProperty(value = "法人姓名")
    private String legalEntityName;

    @ApiModelProperty(value = "企业详细地址")
    private String companyAddress;

    @ApiModelProperty(value = "企业所在地")
    private String companySqes;

    @ApiModelProperty(value = "法人身份证正面")
    private String legalCardFrontUrl;

    @ApiModelProperty(value = "法人身份证反面")
    private String legalCardReverseUrl;

    @ApiModelProperty(value = "法人证件号")
    private String legalIdCard;

    @ApiModelProperty(value = "法人手机号")
    private String legalPhone;

    @ApiModelProperty(value = "法人邮箱")
    private String legalEmail;

    @ApiModelProperty(value = "企业所在城市")
    private String companyCity;

    @ApiModelProperty(value = "进件类型（1-系统，2-三方）")
    private String incomingType;

}
